import java.util.PriorityQueue;

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */

//利用优先级队列的
//class Solution {
//    public ListNode mergeKLists(ListNode[] lists) {
//        PriorityQueue<ListNode> queue=new PriorityQueue<>((v1, v2)->Integer.compare(v1.val,v2.val));
//        ListNode newHead=new ListNode(0);
//        ListNode pre=newHead;
//        //各个链的头节点放入队列中，由于时优先级队列，所以堆顶是最小的
//        for(ListNode list:lists){
//            if(list!=null){
//                queue.add(list);
//            }
//        }
//        while(queue.size()>0){
//            ListNode minNode=queue.poll();
//            pre.next=minNode;
//            pre=pre.next;
//            if(minNode.next!=null){
//                queue.offer(minNode.next);
//            }
//        }
//        return newHead.next;
//    }
//}